//package com.fitbet.api.web.controller.main;
//
//import java.util.List;
//
//import javax.servlet.http.HttpServletRequest;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.MediaType;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import com.demo2do.core.entity.result.HttpResult;
//import com.fitbet.api.service.UserBetService;
//import com.fitbet.api.service.UserService;
//import com.fitbet.api.web.controller.resolver.Secure;
//import com.fitbet.entity.bet.UserBet;
//import com.fitbet.entity.bet.UserBetStatus;
//import com.fitbet.entity.bet.UserBetSupport;
//import com.fitbet.entity.user.User;
//
///**
// * 
// * @author mohanlan
// *
// */
//@Controller
//@RequestMapping("/users")
//public class UserBetController {
//    
//    private final static Logger logger = LoggerFactory.getLogger(UserBetController.class);
//    
//    @Autowired
//    private UserService userService;
//    
//    @Autowired
//    private UserBetService userBetService;
//    
//    /**
//     * 
//     * @param userId
//     * @param betId
//     * @param request
//     * @return
//     */
//    @RequestMapping(value = "/{userId}/bets/{betId}/share", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
//    public @ResponseBody HttpResult userBetShare(@PathVariable("userId") Long userId,
//                                     @PathVariable("betId") Long betId,
//                                     HttpServletRequest request) {
//        
//        HttpResult httpResult = new HttpResult();
//        
//        try {
//            
//            User user = userService.load(userId);
//            
//            UserBet userBet = userBetService.loadUserBet(userId, betId, new UserBetStatus[]{UserBetStatus.PROCESSING, UserBetStatus.PAID, UserBetStatus.OPEN, UserBetStatus.OPENFAILED, UserBetStatus.CLOSE, UserBetStatus.CLOSEFAILED});
//            
//            httpResult.success().data("user", user)
//                                .data("userBet", userBet)
//                                .data("bet", userBet.getBet());
//            
//        } catch (Exception e) {
//            logger.error("userBetShare occur error", e);
//            httpResult.fail("500");
//        }
//        
//        return httpResult;
//        
//    }
//    
//    /**
//     * 
//     * @param userId
//     * @param betId
//     * @param request
//     * @return
//     */
//    @RequestMapping(value = "/{userId}/bets/{betId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
//    public @ResponseBody HttpResult userBetDetail(@Secure User user,
//                                      @PathVariable("userId") Long userId,
//                                      @PathVariable("betId") Long betId,
//                                      HttpServletRequest request) {
//        
//        HttpResult httpResult = new HttpResult();
//        
//        try {
//            
//            UserBet userBet = userBetService.loadUserBet(userId, betId, new UserBetStatus[]{UserBetStatus.PROCESSING, UserBetStatus.PAID, UserBetStatus.OPEN, UserBetStatus.OPENFAILED, UserBetStatus.CLOSE, UserBetStatus.CLOSEFAILED});
//            UserBetSupport userBetSupport = userBetService.loadSupports(userBet, user);
//            List<UserBetSupport> supports = userBetService.listSupports(userBet);
//            
//            httpResult.success().data("user", user)
//                                .data("userBet", userBet)
//                                .data("bet", userBet.getBet())
//                                .data("userBetSupport", userBetSupport)
//                                .data("supports", supports);
//            
//        } catch (Exception e) {
//            logger.error("userBetDetail occur error", e);
//            httpResult.fail("500");
//        }
//        
//        return httpResult;
//        
//    }
//    
//    /**
//     * 
//     * @param user
//     * @param userId
//     * @param betId
//     * @param support
//     * @param request
//     * @return
//     */
//    @RequestMapping(value = "/{userId}/bets/{betId}/support", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
//    public @ResponseBody HttpResult support(@Secure User user,
//                                @PathVariable("userId") Long userId,
//                                @PathVariable("betId") Long betId,
//                                @RequestParam(name = "support", required = false, defaultValue = "true") boolean support,
//                                HttpServletRequest request) {
//        
//        HttpResult httpResult = new HttpResult();
//        
//        try {
//            
//            UserBet userBet = userBetService.loadUserBet(userId, betId, new UserBetStatus[]{UserBetStatus.PROCESSING, UserBetStatus.PAID, UserBetStatus.OPEN, UserBetStatus.OPENFAILED, UserBetStatus.CLOSE, UserBetStatus.CLOSEFAILED});
//            List<UserBetSupport> supports = userBetService.listSupports(userBet);
//            
//            httpResult.success().data("user", user)
//                                .data("userBet", userBet)
//                                .data("bet", userBet.getBet())
//                                .data("supports", supports);
//            
//        } catch (Exception e) {
//            logger.error("support occur error", e);
//            httpResult.fail("500");
//        }
//        
//        return httpResult;
//        
//    }
//    
//}
